package com.nuanshui.framework.utils;

import java.util.Random;

public class ShareCodeUtil {
 
     private static final char [] r= new char []{ 'q' , 'w' , 'e' , '8' , 'a' , 's' , '2' , 'd' , 'z' , 'x' , '9' , 'c' , '7' , 'p' , '5' , 'i' , 'k' , '3' , 'm' , 'j' , 'u' , 'f' , 'r' , '4' , 'v' , 'y' , 'l' , 't' , 'n' , '6' , 'b' , 'g' , 'h' };
 
     private static final char b= 'o' ;
 
     private static final int binLen=r.length;
 
     private static final int s= 6 ;
 
     /**
      * ¸根据id生成6位随机吗
      * @param id ID
      * @return 主建id
      */
     public static String toSerialCode( long id) {
         char [] buf= new char [ 32 ];
         int charPos= 32 ;
 
         while ((id / binLen) > 0 ) {
             int ind=( int )(id % binLen);
             buf[--charPos]=r[ind];
             id /= binLen;
         }
         buf[--charPos]=r[( int )(id % binLen)];
         String str= new String(buf, charPos, ( 32 - charPos));
         if (str.length() < s) {
             StringBuilder sb= new StringBuilder();
             sb.append(b);
             Random rnd= new Random();
             for ( int i= 1 ; i < s - str.length(); i++) {
             sb.append(r[rnd.nextInt(binLen)]);
             }
             str+=sb.toString();
         }
         return str;
     }
 
     public static long codeToId(String code) {
         char chs[]=code.toCharArray();
         long res=0L;
         for ( int i= 0 ; i < chs.length; i++) {
             int ind= 0 ;
             for ( int j= 0 ; j < binLen; j++) {
                 if (chs[i] == r[j]) {
                     ind=j;
                     break ;
                 }
             }
             if (chs[i] == b) {
                 break ;
             }
             if (i > 0 ) {
                 res=res * binLen + ind;
             } else {
                 res=ind;
             }
             // System.out.println(ind + "-->" + res);
         }
         return res;
     }
     
     
     public static void main(String[] args) {
		
	}
}
